home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 3: CDPD 3 / Almathera Ten on Ten - Disc 3: CDPD3.iso / fish / 726-750 / 742 / setprefs / setprefs.asm < prev    next >
Assembly Source File  |  1995-03-18  |  4KB  |  173 lines

  1. ; **************************************************************************
  2. ; *                             Source-Code                                *
  3. ; *                                                                        *
  4. ; *  Program-Name : SetPrefs V1.0                                          *
  5. ; *                                                                        *
  6. ; *  Author       : Michael Wilkes                                         *
  7. ; *                                                                        *
  8. ; *  Use          : Preference-Management                                  *
  9. ; *                                                                        *
  10. ; *  Date         : 01.03.1992                                             *
  11. ; *                                                                        *
  12. ; *  Improvements : Technical support by André Willms                      *
  13. ; *                                                                        *
  14. ; *                                                                        *
  15. ; *                                                                        *
  16. ; *                                                                        *
  17. ; **************************************************************************
  18.  
  19. execbase        =  4
  20. allocmem        = -198
  21. freemem            = -210
  22. openlibrary        = -408
  23. closelibrary        = -414
  24. setprefs        = -324
  25. open            = -30
  26. close            = -36
  27. read            = -42
  28. write            = -48
  29. output            = -60
  30.  
  31. preferencelaenge    =  232
  32.  
  33. start:
  34.  
  35.     movem.l    d0/a0,-(a7)    ; Register retten
  36.  
  37.     jsr    openlib        ; Dos- und Intuitionlibrary öffnen
  38.     jsr    getoutput    ; Aktuelles Ausgabefenster holen
  39.     jsr    writeinfo    ; Infotext schreiben
  40.     
  41.     movem.l    (a7)+,d0/a0    ; Register wiederholen
  42.  
  43.     subq.l    #1,d0        ; CR-Zeichen abziehen
  44.     beq    libend        ; Wenn kein Text, dann Ende        
  45.     move.l    d0,d3
  46.     lea.l    prefname,a1
  47. .l1    move.b    (a0)+,(a1)+    ; Zeichen lesen und in Puffer schreiben
  48.     subq.l    #1,d0
  49.     bne    .l1
  50.     
  51.     jsr    allocprefmem    ; Speicher anfordern
  52.     move.l    dosbase,a6
  53.     move.l    #prefname,d1
  54.     move.l    #1005,d2
  55.     jsr    open(a6)    ; Preference öffnen
  56.     move.l    d0,filehd
  57.     bne    .w1
  58.     
  59.     jsr    writenotfound    ; Preference nicht gefunden
  60.     bra    memend        ; Ende
  61.     
  62. .w1    move.l    filehd,d1
  63.     move.l    prefmemhd,d2
  64.     move.l    #preferencelaenge,d3
  65.     jsr    read(a6)    ; Preference lesen
  66.     
  67.     move.l    filehd,d1
  68.     jsr    close(a6)    ; Preference schliessen
  69.  
  70.     jsr    setpref        ; Preference aktivieren
  71.     
  72. memend:
  73.     jsr    freeprefmem    ; Speicher freigeben
  74.     
  75. libend:
  76.     jsr    closelib    ; Dos- und Intuitionlibrary schliessen
  77.     clr.l    d0        ; Fehlerflag löschen
  78.     rts            ; Programmende
  79.     
  80. getoutput:
  81.     move.l    dosbase,a6
  82.     jsr    output(a6)
  83.     move.l    d0,outputhd
  84.     rts
  85.     
  86. openlib:
  87.     move.l    execbase,a6
  88.     lea.l    dosname,a1
  89.     jsr    openlibrary(a6)
  90.     move.l    d0,dosbase
  91.     lea.l    intname,a1
  92.     jsr    openlibrary(a6)
  93.     move.l    d0,intbase
  94.     rts
  95.  
  96. closelib:
  97.     move.l    execbase,a6
  98.     move.l    dosbase,a1
  99.     jsr    closelibrary(a6)
  100.     move.l    intbase,a1
  101.     jsr    closelibrary(a6)
  102.     rts
  103.  
  104. allocprefmem:
  105.     move.l    execbase,a6
  106.     move.l    #preferencelaenge,d0
  107.     move.l    #2+65536,d1
  108.     jsr    allocmem(a6)
  109.     move.l    d0,prefmemhd
  110.     rts
  111.     
  112. freeprefmem:
  113.     move.l    execbase,a6
  114.     move.l    prefmemhd,a1
  115.     move.l    #preferencelaenge,d0
  116.     jsr    freemem(a6)
  117.     rts
  118.     
  119. writeinfo:
  120.     move.l    dosbase,a6
  121.     move.l    outputhd,d1
  122.     move.l    #tx1,d2
  123.     move.l    #tx1l,d3
  124.     jsr    write(a6)
  125.     rts
  126.     
  127. writenotfound:
  128.     move.l    dosbase,a6
  129.     move.l    outputhd,d1
  130.     move.l    #tx2,d2
  131.     move.l    #tx2l,d3
  132.     jsr    write(a6)
  133.     rts
  134.  
  135. setpref:
  136.     move.l    prefmemhd,a0
  137.     move.l    intbase,a6
  138.     move.l    #preferencelaenge,d0
  139.     move.l    #1,d1
  140.     jsr    setprefs(a6)
  141.     rts
  142.  
  143. intbase:    dc.l 0
  144.  
  145. dosbase:    dc.l 0
  146.  
  147. prefmemhd:    dc.l 0
  148.  
  149. outputhd:    dc.l 0
  150.  
  151. filehd:        dc.l 0
  152.  
  153. intname:    dc.b "intuition.library",0
  154.  
  155. dosname:    dc.b "dos.library",0
  156.  
  157. prefname:    dcb.b 80,0
  158.  
  159. tx1:        dc.b  $a,$9b,"0;33;40",$6d
  160.         dc.b  "SetPrefs V1.0",$9b,"0;31;40",$6d
  161.         dc.b  " (C)01.03.1992 by Michael Wilkes",$a
  162.         dc.b  "Thanx to André Willms for technical support",$a
  163.         dc.b  "USAGE: SetPrefs <prefname>",$a,$a
  164.         
  165. tx2:        dc.b  "Preference not found !",$a,$a
  166.  
  167. tx3:
  168.  
  169. tx1l = tx2-tx1
  170.  
  171. tx2l = tx3-tx2
  172.     
  173.